/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package utils;

import java.util.Properties;
import javax.ejb.Singleton;
import javax.ejb.Stateless;
import javax.mail.Authenticator;
import javax.mail.Message.RecipientType;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

/**
 *
 * @author Dezmond
 */
@Stateless
public class MailBean {
    
       /* Определяем параметры подключения */

         private Properties config   = new Properties();
         private String host         = "smtp.gmail.com";
         private String port         = "465";
         private String factoryClass = "javax.net.ssl.SSLSocketFactory";
         private String authenticate = "true";

        /* Создаем поля для хранения имени и пароля
             к почтовому аккаунту */

         private String userName     = "jforumwebapp";
         private String userPassword = "jforumpassword";
         private String from         = "jforumwebapp@gmail.com";

         public MailBean() {
             config.put("mail.smtp.host", host);
             config.put("mail.smtp.port", port);
             config.put("mail.smtp.socketFactory.port", port);
             config.put("mail.smtp.socketFactory.class", factoryClass);
             config.put("mail.smtp.auth", authenticate);
         }



         /* Возвращаем объект-аутентификатор, служащий
            для предоставления доступа к серверу отправки сообщений */

         private Authenticator authenticate(final String userName, final String userPassword){
             Authenticator authenticator = new javax.mail.Authenticator()
            {
                @Override
                protected PasswordAuthentication getPasswordAuthentication() {
                      return new PasswordAuthentication(userName, userPassword);
                }
            };
            return authenticator;
         }

         public void sendMessage(String to, String subject, String text) {
          try {

                  /* Создаем почтовую сессию на основе параметров подключения
                   и данных аутентификации */

               Session mailSession = Session.getInstance(config, authenticate(userName,userPassword));

                 /* Создаем сообщение MIME-типа и связываем его с сессией mailSession */

               MimeMessage mimeMessage = new MimeMessage(mailSession);

                 /* Получаем реальные сетевые адреса отправителя и получателя */

               InternetAddress senderAddress = new InternetAddress(from);
               InternetAddress targetAddress = new InternetAddress(to);

              /* Заполняем поля сообщения */

                mimeMessage.setFrom(senderAddress);
                mimeMessage.setRecipient(RecipientType.TO, targetAddress);
                mimeMessage.setSubject(subject);
                mimeMessage.setText(text);

                   /* Отправка сообщения */

                Transport.send(mimeMessage);

           } catch (Exception ex) {
                System.err.println(ex.toString());
           }
      }
}
